package com.todo.sight.application.iface.frontend.response;

import com.todo.common.common.enums.EnableTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;

/**
 * @author azhebuxing
 * @date 2024/5/8 21:25
 * @description
 */
@Data
public class SightDetailVO {

    @Schema(title = "POI信息", description = "POI信息")
    private POIInfo poiInfo;

    @Schema(title = "景点基础信息", description = "景点基础信息")
    private SightInfo sightInfo;

    @Schema(title = "景点详细信息", description = "景点详细信息")
    private SightDetail sightDetail;


    @Data
    public static class POIInfo {
        @Schema(title = "poiId", description = "poiId")
        private String poiId;

        @NotNull
        @Schema(title = "名称", description = "名称")
        private String name;

        @NotNull
        @Schema(title = "省份", description = "省份")
        private String province;

        @Schema(title = "城市", description = "城市")
        private String city;

        @Schema(title = "具体地址", description = "具体地址")
        private String address;

        @NotNull
        @Schema(title = "poi类型", description = "poi类型")
        private Integer poiType;

        @NotNull
        @Schema(title = "poi类型名称", description = "poi类型名称")
        private String poiTypeName;

        @Schema(title = "类型列表", description = "类型列表")
        private List<String> typeList;

        @NotNull
        @Schema(title = "经度", description = "经度")
        private BigDecimal lon;

        @NotNull
        @Schema(title = "纬度", description = "纬度")
        private BigDecimal lat;

        @Schema(title = "是否展示", description = "是否展示")
        private Integer isShow;
    }

    @Data
    public static class SightInfo {
        @Schema(title = "景点主键", description = "景点主键")
        private String sightId;

        @Schema(title = "标题", description = "标题")
        private String title;

        @Schema(title = "宣传口号", description = "宣传口号")
        private String slogan;

        @Schema(title = "评分", description = "评分")
        private Integer score;

        @Schema(title = "热度", description = "热度")
        private Integer hot;

        @Schema(title = "主图", description = "主图")
        private String mainImg;

        @Schema(title = "是否营业", description = "是否营业")
        private EnableTypeEnum isOpen;
    }

    @Data
    public static class SightDetail {

        @Schema(title = "景点详情描述", description = "景点详情描述")
        private String desc;

        @Schema(title = "门票信息", description = "门票信息")
        private TicketInfo ticketInfo;

        @Schema(title = "开放时间", description = "开放时间")
        private String openTime;

        @Schema(title = "游玩建议：须知、建议", description = "游玩建议：须知、建议")
        private Suggest suggest;

    }

    @Data
    public static class TicketInfo {

        @Schema(title = "门票规则", description = "门票规则")
        private String ticketRule;

        @Schema(title = "门票统一售价", description = "门票统一售价")
        private String ticketPrice;

        @Schema(title = "门票折扣信息", description = "门票折扣信息")
        private String ticketDiscountInfo;
    }

    @Data
    public static class Suggest {

        @Schema(title = "游玩须知", description = "游玩须知")
        private String guide;

        @Schema(title = "游玩建议", description = "游玩建议")
        private String suggestInfo;

        @Schema(title = "出行限制", description = "出行限制")
        private String travelLimit;

        @Schema(title = "安全建议", description = "安全建议")
        private String securitySuggest;
    }

}
